package com.own.component.common.em;

import com.own.base.BaseResponseCode;
import com.own.constant.ConstantCommon;
import lombok.AllArgsConstructor;

/**
 * RequestEnum
 *
 * @author chenxueli
 * @date 2020/6/15 10:59
 */
@AllArgsConstructor
public enum RequestEnum implements BaseResponseCode {

    /**
     * 请求成功
     */
    SUCCESS(ConstantCommon.SUCCESS_CODE, "请求成功"),
    /**
     * api接口维护中
     */
    API_MAINTENANCE("S0004", "api接口维护中"),
    /**
     * 未获取到用户对象实例
     */
    NOT_FOUND_USER_OBJECT("S0005", "未获取到用户对象实例"),
    /**
     * 未登录
     */
    NO_LOGIN("U0009", "用户未登录或登录超时"),
    /**
     * 无权限操作
     */
    NO_ACCESS_OPERATIONS("U0010", "无权限操作"),
    /**
     * 请求失败
     */
    FAILURE("S0001", "请求失败"),
    /**
     * 操作成功
     */
    OPERATION_SUCCESS("00003", "操作成功"),
    /**
     * 操作失败
     */
    OPERATION_FAILURE("00002", "操作失败"),
    /**
     * 系统异常
     */
    ERROR("S0002", "系统异常"),
    /**
     * 请求资源不存在
     */
    FORBIDDEN("S0014", "请求资源不存在"),
    /**
     * 记录版本不存在或不匹配
     */
    VERSION_NOT_MATCH("-1004", "记录版本不存在或不匹配"),
    /**
     * 参数不能为空
     */
    PARAMETER_NOT_NULL("-1005", "参数不能为空"),
    /**
     * 资源未找到404
     */
    NOT_FOUND("-1006", "资源未找到"),
    /**
     * 服务器处理异常
     */
    INTERNAL_SERVER_ERROR("-1007", "服务器处理异常"),
    /**
     * 服务器处理异常
     */
    SQL_ERROR("sql_error", "数据库处理异常"),
    /**
     * 数据库主键冲突
     */
    DUPLICATE_KEY("DUPLICATE_KEY", "数据库主键冲突"),
    /**
     * 缓存异常
     */
    CACHE_ERROR("cache_error", "缓存异常"),
    /**
     * 数据库数据插入异常
     */
    SQL_INSERT_ERROR("sql_insert_error", "数据库数据插入异常"),
    /**
     * 数据库数据更新异常
     */
    SQL_UPDATE_ERROR("sql_update_error", "数据库数据更新异常"),
    /**
     * 数据库数据删除异常
     */
    SQL_DELETE_ERROR("sql_delete_error", "数据库数据删除异常"),
    /**
     * 数据库数据查询异常
     */
    SQL_SELECT_ERROR("sql_select_error", "数据库数据查询异常"),
    /**
     * redis处理异常
     */
    REDIS_ERROR("-1009", "Redis服务器处理异常"),
    /**
     * 不是自己的数据
     */
    NOT_SELF("not_self", "不是自己的数据，无法操作"),
    /**
     * 不是自己的数据
     */
//    NULL_POINTER("null_pointer", "数据空指针异常，请联系管理员"),
    NULL_POINTER("null_pointer", "数据准备中，请重新进入页面"),
    /**
     * 参数不匹配
     */
    PARAMETER_NOT_MATCH("parameter_not_match", "参数不匹配"),
    ;

    /**
     * 返回状态码
     */
    private final String code;

    /**
     * 描述
     */
    private final String desc;

    /**
     * 获取返回信息
     *
     * @return 返回code
     */
    @Override
    public String code() {
        return this.code;
    }

    /**
     * 获取描述
     *
     * @return 返回描述
     */
    @Override
    public String desc() {
        return this.desc;
    }

}
